Fisher线性判别分析以及python实现 您所在的位置:网站首页 python pyplot 线型 Fisher线性判别分析以及python实现

Fisher线性判别分析以及python实现

#Fisher线性判别分析以及python实现| 来源: 网络整理| 查看: 265

Fisher线性判别分析以及python实现 阿库塔姆 分类:机器学习 发布时间 2022.06.11阅读数 1209 评论数 0 线性判别函数基本概念

在这里插入图片描述

而如何定量分析找到这一最佳投影方向则是我们下面需要进行的任务

最优方向推导过程

#导入所需库:import numpy as npfrom matplotlib import pyplot as plt

#创建样本集:X1 = np.array([[[1.2],[2.8]],               [[1.9],[3.7]],               [[2.5],[3.8]],               [[4.8],[7.9]],               [[5.6],[7.8]]])X2 = np.array([[[9.7],[12.6]],               [[10.8],[12.7]],               [[13.7],[22.7]],               [[7.48],[14.82]],               [[11.23],[17.16]]])N1 = X1.shape[0]N2 = X2.shape[0]

#类均值向量:m1 = np.array([[0],[0]])for i in range(0,N1):    m1 =m1+X1[i]m1 = m1/N1m2 = np.array([[0],[0]])for i in range(0,N2):    m2 =m2+X2[i]m2 = m2/N2

#类内离散度矩阵:S1 = np.zeros((2,2))for i in range(0,N1):    S1 = S1+np.dot(X1[i]-m1,np.transpose(X1[i]-m1))S2 = np.zeros((2,2))for i in range(0,N2):    S2 = S2+np.dot(X2[i]-m2,np.transpose(X2[i]-m2))Sw = S1+S2

#类间离散度矩阵:Sb = np.dot(m1-m2,np.transpose(m1-m2))

#方向向量:w = np.dot(np.linalg.inv(Sw),m1-m2)print(w)

#投影后均值:m11 = np.dot(np.transpose(w),m1)m21 = np.dot(np.transpose(w),m2)w0 = -(m11+m21)/2

#测试样本:x_test = np.array([[3.42],[5.86]])g = np.dot(np.transpose(w),x_test)+w0if g>0:    print('测试样本属于第一类!')else:    print('测试样本属于第二类!')

#可视化:for i in range(0,N1):    plt.scatter(X1[i,0],X1[i,1],c='r')for i in range(0,N2):    plt.scatter(X2[i,0],X2[i,1],c='b')plt.scatter(x_test[0],x_test[1],c='g')x = np.arange(0,15,0.01)y = w[1]*x/w[0]plt.plot(x,y,c='black')plt.show()

运行结果如图:

在这里插入图片描述

在这里插入图片描述

最终将测试样本分入第一类,从图像上来看是合理的

人工智能机器学习Python模式识别线性代数

打赏 0

点赞 0

收藏 0

分享

微信 微博 QQ 图片 上一篇:主成分分析法(PCA)详解与python实现


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有